package ExceptionAndThread.Exception;

/*
 * 分析异常及产生的原因
 *
 * */
public class Throw01 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7};
        get(arr, 8);
        /*
        main方法接收到了这个异常对象（ArrayIndexOutOfBoundsException）
        main方法也没有对应的异常处理逻辑，继续把对象抛出给main方法的调用者或者JVM处理
        */
         /*
        main方法接把这个异常对象（ArrayIndexOutOfBoundsException）抛出给JVM虚拟机
        JVM接收到之后，执行两个步骤：
            1、把异常对象（原因、内容、位置）以红色字体打印在控制台
            2、JVM会终止当前正在执行的java程序————>中断处理
         */


    }

    public static int get(int[] arr, int index) {
    /*
    当访问的索引不存在时，JVM会检测出异常
     JVM会执行两个步骤
        1、JVM会根据异常产生的原因创建一个异常对象，这个对象包含了异常产生的原因、内容、位置
            java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 7
        2、在get方法中，没有异常处理的机制（try、catch），那么JVM就会把异常对象抛出给方法的调用者main方法来处理这个异常
     */

        return arr[index];
    }
}
